$(document).ready(function() {

    let isAiModalOpen = false;
    let activeAiRequest = null;
    function openModal(modalId) {
        $(modalId).fadeIn(5);
    }

    function closeModal(modalId) {
        $(modalId).fadeOut(5);
        // 如果是AI模态框
        if (modalId === "#ai-modal") {
            isAiModalOpen = false;

            // 取消所有待处理的提示
            Swal.close();

            // 中止正在进行的请求
            if (activeAiRequest) {
                activeAiRequest.abort();
                activeAiRequest = null;
            }
        }
    }
    if(sessionStorage.getItem("adminAccount")==null){
        location.href="AdminLogin"
    }
    //
    //
    // $(".logout-btn").click(function() {
    //     if (confirm("确定要退出登录吗？")) {
    //         // 这里实际项目中应该是跳转到登录页
    //         showNotification("您已安全退出系统", 'success');
    //
    //         // 模拟退出效果
    //         setTimeout(() => {
    //             $(".user-info").fadeOut(500);
    //             showNotification("请重新登录系统", 'info');
    //         }, 1500);
    //     }
    // });



    function SearchClass(){
        $.ajax({
            url:"/class/list",
            type:"GET",
            async:false,
            success:function(value){
                $(".class-search").empty()
                $(".class-search").append("<option value=''>请选择班级</option>")
                for (var i = 0;i<value.data.length;i++){
                    $(".class-search").append(
                        "<option value='"+value.data[i].className+"'>"+value.data[i].className+"</option>"
                    )
                }
            },
            error:function(){
                alert("请求失败了")
            }
        })
    }
    SearchClass();

    // 示例学生数据
    let students = [];
    // 分页相关变量
    let currentPage = 1;
    let rowsPerPage = parseInt($("#rows-per-page").val());
    var studentLen;
    function renderTable(){
        $.ajax({
            url:"/student/list1",
            type:"POST",
            async:false,
            data:{
                page:currentPage,
                pageSize:rowsPerPage,
            },
            success:function(value){
                students=value.data.rows
                studentLen = value.data.total
            },
            error:function(){
                alert("请求失败了")
            }
        })
    }

    renderTable();
    let filteredStudents = students;


    // 渲染学生表格
    function renderStudentTable() {
        const tbody = $("#student-table tbody");
        tbody.empty();
        const currentStudents = students;
        // 计算当前页的数据
        // const startIndex = (currentPage - 1) * rowsPerPage;
        // const endIndex = Math.min(startIndex + rowsPerPage, filteredStudents.length);
        // const currentStudents = filteredStudents.slice(startIndex, endIndex);

        // 更新分页信息
        $("#start-row").text((currentPage - 1) * rowsPerPage + 1);
        $("#end-row").text(Math.min(currentPage * rowsPerPage, studentLen));
        $("#total-rows").text(studentLen);

        if (currentStudents.length === 0) {
            tbody.html(`
                        <tr>
                            <td colspan="7">
                                <div class="empty-state">
                                    <i class="fas fa-inbox"></i>
                                    <h3>没有找到学生信息</h3>
                                    <p>尝试添加新学生或修改搜索条件</p>
                                </div>
                            </td>
                        </tr>
                    `);
            return;
        }

        currentStudents.forEach(student => {

            const row = `
                        <tr>
                            <td class="student-id">${student.id}</td>
                            
                            <td>${student.name}</td>
                            <td>${student.password}</td>
                            <td>${student.age}</td>
                            <td>${student.sex}</td>
                            <td>${student.className}</td>
                            <td>${student.sno}</td>
                            <td>${student.phone}</td>
                            <td class="actions">
                                <div class="action-btn edit-btn" data-id="${student.id}" title="编辑">
                                    <i class="fas fa-edit"></i>
                                </div>
                                <div class="action-btn delete-btn" data-id="${student.id}" title="删除">
                                    <i class="fas fa-trash"></i>
                                </div>
                                <div class="action-btn AI-btn" data-id="${student.id}" title="AI分析">
                                    <i class="fas fa-digging"></i>
                                </div>
                            </td>
                        </tr>
                    `;
            tbody.append(row);
        });

        // 渲染分页控件
        renderPagination();
    }

    // 渲染分页控件
    function renderPagination() {
        const totalPages = Math.ceil(studentLen / rowsPerPage);

        // 清空现有的页码按钮
        $(".pagination-controls .pagination-btn:not(.first-page):not(.prev-page):not(.next-page):not(.last-page)").remove();

        // 确定要显示的页码范围
        let startPage = Math.max(1, currentPage - 2);
        let endPage = Math.min(totalPages, startPage + 4);

        if (endPage - startPage < 4) {
            startPage = Math.max(1, endPage - 4);
        }

        // 添加上一页按钮
        $(".prev-page").after($(".prev-page").next(".pagination-btn").detach());

        // 添加页码按钮
        for (let i = endPage; i >= startPage; i--) {
            const pageBtn = $(`<div class="pagination-btn" data-page="${i}">${i}</div>`);
            if (i === currentPage) {
                pageBtn.addClass("active");
            }

            $(".prev-page").after(pageBtn);
        }

        // 更新按钮状态
        $(".first-page").toggleClass("disabled", currentPage === 1);
        $(".prev-page").toggleClass("disabled", currentPage === 1);
        $(".next-page").toggleClass("disabled", currentPage === totalPages);
        $(".last-page").toggleClass("disabled", currentPage === totalPages);
    }
    // 加载学生数据函数
    function loadStudents() {
        const name = $("#name-search").val().toLowerCase();
        const className = $("#class-search").val();
        const phone = $("#phone-search").val().toLowerCase();

        $.ajax({
            url: "/student/list1",
            type: "POST",
            async: false,
            data: {
                name: name,
                className: className,
                phone: phone,
                page: currentPage,
                pageSize: rowsPerPage
            },
            success: function(value) {
                students = value.data.rows;
                studentLen = value.data.total;
                renderStudentTable();
            },
            error: function() {
                alert("请求失败");
            }
        });
    }

    // 初始化表格
    renderStudentTable();

    // 打开添加模态框
    $("#add-btn").click(function() {
        $("#add-modal").css("display", "flex");
        SearchClass();
        $("#student-name").focus();
    });

    // 关闭所有模态框
    function closeAllModals() {
        // $(".modal").hide();
        $(".modal").each(function() {
            const modalId = "#" + $(this).attr("id");
            closeModal(modalId);
        });
    }

    // 关闭模态框
    $(".close-btn, #cancel-add, #cancel-edit").click(closeAllModals);

    // 点击模态框外部关闭
    $(document).click(function(e) {
        if ($(e.target).hasClass('modal')) {
            closeAllModals();
        }
    });

    // 保存新学生
    $("#save-add").click(function() {
        const name = $("#student-name").val().trim();
        const className = $("#student-class").val().trim();
        const phone = $("#student-phone").val().trim();
        const password = $("#student-password").val().trim();
        const age = $("#student-age").val().trim();
        const sex = $("#student-sex").val().trim();
        const sno = $("#student-sno").val().trim();

        if (!name || !className || !phone) {
            alert("请填写所有必填字段");
            return;
        }

        if (!/^1[3-9]\d{9}$/.test(phone)) {
            alert("请输入有效的手机号码");
            return;
        }

        $.ajax({
            url:"/student/addstudent",
            type:"POST",
            async:false,
            data:{
                name: name,
                className: className,
                phone: phone,
                password,
                age,
                sex,
                sno
            },
            success:function(value){
                currentPage = 1;
                loadStudents();
            },
            error:function(){
                alert("请求失败了")
            }
        })


        // 重置到第一页
        currentPage = 1;

        // 重新渲染表格
        renderStudentTable();

        // 关闭模态框并清空表单
        $("#add-modal").hide();
        $("#student-name, #student-class, #student-phone").val("");

        // 显示成功消息
        showNotification(`学生 <strong>${name}</strong> 添加成功！`, 'success');
    });

    // 搜索功能
    $("#search-btn").click(function() {
        const name = $("#name-search").val().toLowerCase();
        const className = $("#class-search").val();
        const phone = $("#phone-search").val().toLowerCase();

        filteredStudents = students.filter(student => {
            return (name === "" || student.name.toLowerCase().includes(name)) &&
                (className === "" || student.className.toLowerCase().includes(className)) &&
                (phone === "" || student.phone.includes(phone));
        });

        // 重置到第一页
        currentPage = 1;
        loadStudents();
        renderStudentTable();

        // 显示搜索结果消息
        if (studentLen === 0) {
            showNotification("没有找到匹配的学生", 'warning');
        } else {
            showNotification(`找到 ${studentLen} 名学生`, 'success');
        }
    });

    // 按回车键触发搜索
    $("#name-search, #class-search, #phone-search").keypress(function(e) {
        if (e.which === 13) {
            $("#search-btn").click();
        }
    });

    // 删除学生
    $(document).on("click", ".delete-btn", function() {
        const id = $(this).data("id");


        if (confirm(`确定要删除该学生吗？此操作不可恢复。`)) {
            $.ajax({
                url:"/student/deletestudent",
                type:"POST",
                async:false,
                data:{
                    id
                },
                success:function(value){
                    // 删除后重新加载数据
                    loadStudents();
                    location.reload()
                },
                error:function(){
                    alert("请求失败了")
                }
            })

            // 如果当前页没有数据且不是第一页，则回到上一页
            const startIndex = (currentPage - 1) * rowsPerPage;
            if (startIndex >= filteredStudents.length && currentPage > 1) {
                currentPage--;
            }

            renderStudentTable();
            showNotification(`该学生信息已删除`, 'error');
        }
    });

    // 编辑学生 - 打开模态框
    $(document).on("click", ".edit-btn", function() {
        const id = $(this).data("id");
        const student = students.find(s => s.id === id);
        if (student) {
            console.log(student)
            // 填充表单数据
            $("#edit-id").val(student.id);
            $("#edit-name").val(student.name);
            $("#edit-class").val(student.className);
            $("#edit-phone").val(student.phone);
            $("#edit-age").val(student.age);
            $("#edit-sex").val(student.sex);
            $("#edit-sno").val(student.sno);
            $("#edit-password").val(student.password);

            // 显示编辑模态框
            $("#edit-modal").css("display", "flex");
        }
    });


    // // 打开AI分析模态框
    // $(document).on("click",".AI-btn",function() {
    //     const row = $(this).closest("tr");
    //     const id = row.find("td:eq(0)").text();
    //     $("#ai-student-name").text(row.find("td:eq(1)").text());
    //     $("#ai-student-class").text(row.find("td:eq(5)").text());
    //     $("#ai-student-sno").text(row.find("td:eq(6)").text());
    //     $("#ai-student-age").text(row.find("td:eq(3)").text());
    //     // 模拟AI分析过程
    //     openModal("#ai-modal");
    //     $("#ai-analysis-content").html(`
    //         <div class="ai-loading">
    //             <i class="fas fa-cog"></i>
    //             <p>AI正在分析学生数据，请稍候...</p>
    //         </div>
    //     `);
    //
    //
    //
    //
    //     // 模拟AI分析延迟
    //     setTimeout(generateAiAnalysis, 5);
    // });
    //
    // // 生成AI分析报告
    // function generateAiAnalysis() {
    //     var data;
    //     const name = $("#ai-student-name").text()
    //     $.ajax({
    //         url:"/student/AIAnalyze",
    //         type:"POST",
    //         data:{
    //             name
    //         },
    //         success:function(value){
    //             console.log(value)
    //             data = value.data;
    //             $("#ai-analysis-content").html(value.data.result);
    //             $("#download-word").attr("href",data.url)
    //         },
    //         error:function(){
    //             alert("请求失败了")
    //         }
    //     })
    //
    // }

    // 全局缓存对象，使用学生ID作为键
    const aiAnalysisCache = {};

// 打开AI分析模态框
    $(document).on("click", ".AI-btn", function() {
        const row = $(this).closest("tr");
        const id = row.find("td:eq(0)").text().trim(); // 唯一ID
        const name = row.find("td:eq(1)").text().trim();
        const className = row.find("td:eq(5)").text().trim();
        const sno = row.find("td:eq(6)").text().trim();
        const age = row.find("td:eq(3)").text().trim();

        // 设置学生信息
        $("#ai-student-name").text(name);
        $("#ai-student-class").text(className);
        $("#ai-student-sno").text(sno);
        $("#ai-student-age").text(age);

        // 打开模态框
        isAiModalOpen = true;
        openModal("#ai-modal");

        // 存储当前分析的学生ID（用于错误处理）
        $("#ai-modal").data("current-student-id", id);
        $("#ai-modal").data("current-student-name", name);

        // 检查是否有缓存结果
        if (aiAnalysisCache[id]) {
            // 询问用户是否重新分析
            Swal.fire({
                title: '已有分析结果',
                text: `学生 ${name} 已有历史AI分析报告，是否重新生成新的分析报告？`,
                icon: 'question',
                showCancelButton: true,
                confirmButtonText: '重新分析',
                cancelButtonText: '查看历史结果',
                reverseButtons: true,
                allowOutsideClick: false
            }).then((res) => {
                if (res.isConfirmed) {
                    showLoading();
                    performAiAnalysis(id, name);
                } else {
                    displayAnalysisResult(aiAnalysisCache[id]);
                }
            });
        } else {
            showLoading();
            performAiAnalysis(id, name);
        }
    });

// 显示加载动画
    function showLoading() {
        $("#ai-analysis-content").html(`
        <div class="ai-loading">
            <i class="fas fa-cog fa-spin"></i>
            <p>AI正在分析学生数据，请稍候...</p>
        </div>
    `);
    }

// 显示分析结果（安全地处理HTML内容）
    function displayAnalysisResult(data) {
        // 使用text()而不是html()防止XSS攻击
        const content = $("<div>").html(marked.parse(data.res.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>')) || "");
        $("#ai-analysis-content").empty().append(content);

        // 设置下载链接（确保URL安全）
        const downloadBtn = $("#download-word");
        if (data.url && isValidUrl(data.url)) {
            downloadBtn.attr("href", data.url).removeClass("disabled");
        } else {
            downloadBtn.attr("href", "#").addClass("disabled");
        }

        // 显示成功提示
        Swal.fire({
            title: '分析完成!',
            icon: 'success',
            timer: 2000,
            showConfirmButton: false
        });
    }

// 简单的URL验证
    function isValidUrl(url) {
        try {
            new URL(url);
            return true;
        } catch {
            return false;
        }
    }

// 显示分析错误
    function showAnalysisError() {
        const id = $("#ai-modal").data("current-student-id");
        const name = $("#ai-modal").data("current-student-name");

        $("#ai-analysis-content").html(`
        <div class="ai-error">
            <i class="fas fa-exclamation-triangle"></i>
            <p>AI分析失败，请稍后再试</p>
            <button class="btn btn-retry" data-id="${id}" data-name="${name}">
                重试分析
            </button>
        </div>
    `);

        // 绑定重试事件（避免使用onclick）
        $(".btn-retry").off("click").on("click", function() {
            const id = $(this).data("id");
            const name = $(this).data("name");
            showLoading();
            performAiAnalysis(id, name);
        });
    }

// 执行AI分析请求
    function performAiAnalysis(id, name) {
        // 清除之前的请求
        if (activeAiRequest) {
            activeAiRequest.abort();
        }
        $.ajax({
            url: "/student/AIAnalyze",
            type: "POST",
            data: { name },
            success: function(response) {
                // 检查模态框是否仍然打开
                if (!isAiModalOpen) return;
                console.log(response.data)
                if (response.code==200 && response.data) {
                    // 缓存结果（使用学生ID作为键）
                    aiAnalysisCache[id] = response.data;
                    displayAnalysisResult(response.data);
                    if (isAiModalOpen) {
                        Swal.fire({
                            title: '分析完成!',
                            icon: 'success',
                            timer: 2000,
                            showConfirmButton: false
                        });
                    }
                } else {
                    showAnalysisError();
                }
            },
            error: function(xhr, status, error) {
                // console.error("AI分析请求失败:", error);
                // showAnalysisError();
                // 仅当模态框仍然打开时显示错误
                if (isAiModalOpen && status !== "abort") {
                    console.error("AI分析请求失败:", error);
                    showAnalysisError();
                }
            }
        });
    }

    $(".close-btn, #cancel-add, #cancel-edit, #close-ai").click(function() {
        const modalId = "#" + $(this).closest(".modal").attr("id");
        closeModal(modalId);
    });

    // 保存编辑
    $("#save-edit").click(function() {
        const id = parseInt($("#edit-id").val());
        const name = $("#edit-name").val().trim();
        const className = $("#edit-class").val().trim();
        const phone = $("#edit-phone").val().trim();
        const age = $("#edit-age").val().trim();
        const sex = $("#edit-sex").val().trim();
        const sno = $("#edit-sno").val().trim();
        const password = $("#edit-password").val().trim();

        if (!name || !className || !phone) {
            alert("请填写所有必填字段");
            return;
        }

        if (!/^1[3-9]\d{9}$/.test(phone)) {
            alert("请输入有效的手机号码");
            return;
        }

        // 更新学生信息
        const studentIndex = students.findIndex(s => s.id === id);
        const filteredIndex = filteredStudents.findIndex(s => s.id === id);

        if (studentIndex !== -1) {
            $.ajax({
                url:"/student/updatestudent",
                type:"POST",
                async:false,
                data:{
                    id,
                    name,
                    className,
                    phone,
                    age,
                    sex,
                    password,
                    sno
                },
                success:function(value){
                    // 更新后重新加载数据
                    loadStudents();
                    location.reload()
                },
                error:function(){
                    alert("请求失败了")
                }
            })

            // 重新渲染表格
            renderStudentTable();

            // 关闭模态框
            $("#edit-modal").hide();

            // 显示成功消息
            showNotification(`学生 <strong>${name}</strong> 信息已更新`, 'success');
        }
    });

    // 分页事件处理
    $(document).on("click", ".pagination-btn", function() {
        if ($(this).hasClass("disabled")) return;

        const totalPages = Math.ceil(studentLen / rowsPerPage);

        if ($(this).hasClass("first-page")) {
            currentPage = 1;
        } else if ($(this).hasClass("prev-page")) {
            if (currentPage > 1) currentPage--;
        } else if ($(this).hasClass("next-page")) {
            if (currentPage < totalPages) currentPage++;
        } else if ($(this).hasClass("last-page")) {
            currentPage = totalPages;
        } else {
            currentPage = parseInt($(this).data("page"));
        }
        loadStudents();
        renderStudentTable();
    });

    // 每页显示行数更改
    $("#rows-per-page").change(function() {
        rowsPerPage = parseInt($(this).val());
        currentPage = 1;
        loadStudents();
        renderStudentTable();
    });

    // 显示通知函数
    function showNotification(message, type) {
        // 移除之前的通知
        $(".notification").remove();

        const notification = $(`
                    <div class="notification" style="
                        position: fixed;
                        top: 20px;
                        right: 20px;
                        padding: 15px 25px;
                        border-radius: 8px;
                        color: white;
                        font-weight: 600;
                        box-shadow: 0 4px 12px rgba(0,0,0,0.15);
                        z-index: 2000;
                        display: flex;
                        align-items: center;
                        gap: 10px;
                        animation: fadeIn 0.3s, fadeOut 0.3s 2.7s;
                    ">
                        <i class="fas ${type === 'success' ? 'fa-check-circle' : type === 'error' ? 'fa-exclamation-circle' : 'fa-info-circle'}"></i>
                        <span>${message}</span>
                    </div>
                `);

        // 设置背景颜色
        if (type === 'success') {
            notification.css('background', 'linear-gradient(to right, #34a853, #2d9248)');
        } else if (type === 'error') {
            notification.css('background', 'linear-gradient(to right, #ea4335, #d32a1c)');
        } else {
            notification.css('background', 'linear-gradient(to right, #fbbc05, #e0a800)');
        }

        // 添加到页面
        $("body").append(notification);

        // 5秒后移除
        setTimeout(() => {
            notification.remove();
        }, 3000);
    }
});